Method and apparatus for identifying network functions based on user data

ABSTRACT

Techniques for identifying network functions include determining first data that indicates a concept represented in content provided by a device. A function provided by a network service is determined based on the first data. In some embodiments, techniques include forming a data structure that associates each function of a plurality of functions provided by a plurality of network services with at least one identifier for a concept.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.12/789,043, filed May 27, 2010, which is herein incorporated byreference in its entirety.

BACKGROUND

Service providers and device manufacturers (e.g., wireless, cellular,etc.) are continually challenged to deliver value and convenience toconsumers by, for example, providing compelling network services. Manydevice manufacturers have invited independent parties to developsoftware applications for the hardware platforms produced by thosemanufacturers; for example, to accelerate the number of applicationsthat can be offered to users of the platform in a short time after theplatform is introduced. Such applications often rely on backend servicesavailable over a communications network, such as mapping services,points of interest services, telephone number lookup services, exchangerate services, image processing services, facial recognition services,music identification services, among hundreds or even thousands of otherbackend services. These services typically are invoked using aparticular application programming interface (API) accessed over thecommunication network through a particular messaging protocol. It canbecome very challenging for an application developer to identify thebackend services appropriate for supporting the application.

SOME EXAMPLE EMBODIMENTS

Therefore, there is a need for an approach for identifying networkfunctions based on user data, called content hereinafter, such as soundclips and photographs on a user device or based on context, such astime, location and activity, as determined on the user device, or both.

According to one embodiment, a method comprises determining first datathat indicates a concept represented in content provided by a device.The method further comprises determining, based on the first data, afunction provided by a network service.

According to another embodiment, an apparatus comprises at least oneprocessor, and at least one memory including computer program code, theat least one memory and the computer program code configured to, withthe at least one processor, cause, at least in part, the apparatus todetermine first data that indicates a concept represented in contentprovided by a device. The apparatus is further caused to determine,based on the first data, a function provided by a network service.

According to another embodiment, a method comprises facilitating accessto at least one interface configured to allow access to at least oneservice. The at least one service is configured to perform at leastdetermining first data that indicates a concept represented in contentprovided by a device. The at least one service is configured also todetermine, based on the first data, a function provided by a differentnetwork service.

According to another embodiment, a computer-readable storage mediumcarrying one or more sequences of one or more instructions which, whenexecuted by one or more processors, cause, at least in part, anapparatus to determine first data that indicates a concept representedin content provided by a device. The apparatus is further caused todetermine, based on the first data, a function provided by a networkservice.

According to another embodiment, an apparatus comprises means fordetermining first data that indicates a concept represented in contentprovided by a device. The apparatus further comprises means fordetermining, based on the first data, a function provided by a networkservice.

According to one embodiment, a method comprises forming a data structurethat associates each function of a plurality of functions provided by aplurality of network services with at least one identifier for aconcept.

According to another embodiment, an apparatus comprises at least oneprocessor, and at least one memory including computer program code, theat least one memory and the computer program code configured to, withthe at least one processor, cause, at least in part, the apparatus toform a data structure that associates each function of a plurality offunctions provided by a plurality of network services with at least oneidentifier for a concept.

According to another embodiment, a method comprises facilitating accessto at least one interface configured to allow access to at least oneservice. The at least one service is configured to form a data structurethat associates each function of a plurality of functions provided by aplurality of network services with at least one identifier for aconcept.

According to another embodiment, a computer-readable storage mediumcarrying one or more sequences of one or more instructions which, whenexecuted by one or more processors, cause, at least in part, anapparatus to form a data structure that associates each function of aplurality of functions provided by a plurality of network services withat least one identifier for a concept.

According to another embodiment, a computer program product includes oneor more sequences of one or more instructions which, when executed byone or more processors, cause an apparatus to at least perform the stepsof one or more of the above methods.

According to another embodiment, an apparatus comprises means forforming a data structure that associates each function of a plurality offunctions provided by a plurality of network services with at least oneidentifier for a concept. The apparatus also comprises means for meansfor forming a data structure that associates each function of theplurality of functions provided by the plurality of network serviceswith at least one identifier for a device context.

Still other aspects, features, and advantages of the invention arereadily apparent from the following detailed description, simply byillustrating a number of particular embodiments and implementations,including the best mode contemplated for carrying out the invention. Theinvention is also capable of other and different embodiments, and itsseveral details can be modified in various obvious respects, all withoutdeparting from the spirit and scope of the invention. Accordingly, thedrawings and description are to be regarded as illustrative in nature,and not as restrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments of the invention are illustrated by way of example, andnot by way of limitation, in the figures of the accompanying drawings:

FIG. 1 is a diagram of a system capable of identifying network functionsbased on content and context on user equipment, according to oneembodiment;

FIG. 2A is a diagram of a data structure for storing a function inassociation with one or more objects or contexts;

FIG. 2B is a diagram of a data structure for storing an index for afunction-concept-context data structure;

FIG. 3A is a diagram of modules of a client process for using a functionbased on content or context at the client, according to one embodiment;

FIG. 3B is a diagram of modules of a user oriented service, according toone embodiment;

FIG. 3C is a diagram of modules of a function lookup service, accordingto one embodiment;

FIG. 4 is a flowchart of a process for function lookup, according to oneembodiment;

FIG. 5 is a flowchart of a process for an application that uses functionlookup, according to one embodiment;

FIG. 6 is a flowchart of a process for building afunction-concept-context data structure, according to one embodiment;

FIGS. 7A-7E are diagrams of user interfaces utilized in the processes ofFIG. 5, according to various embodiments;

FIG. 8 is a diagram of hardware that can be used to implement anembodiment of the invention;

FIG. 9 is a diagram of a chip set that can be used to implement anembodiment of the invention; and

FIG. 10 is a diagram of a mobile terminal (e.g., handset) that can beused to implement an embodiment of the invention.

DESCRIPTION OF SOME EMBODIMENTS

Examples of a method, apparatus, and computer program are disclosed foridentifying network functions based on content or context. In thefollowing description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the embodiments of the invention. It is apparent,however, to one skilled in the art that the embodiments of the inventionmay be practiced without these specific details or with an equivalentarrangement. In other instances, well-known structures and devices areshown in block diagram form in order to avoid unnecessarily obscuringthe embodiments of the invention.

As used herein, the term content refers to refers to any digital data,including data that can be presented for human perception, for example,digital sound, songs, digital images, digital games, digital maps, pointof interest information, digital videos (such as music videos, newsclips and theatrical videos), documents, advertisements, programinstructions or data objects, any other digital data, or any combinationthereof. Content is stored in one or more data structures, such as filesor databases. Although various embodiments are described with respect toidentifying network functions appropriate for a digital photograph, itis contemplated that the approach described herein may be used withother types of content, such as sound recordings, video recordings, gamedata and files retrieved from the network, among others.

FIG. 1 is a diagram of a system 100 capable of identifying networkfunctions based on content and context on user equipment, according toone embodiment. User equipment 101 has connectivity to one or more useroriented network services 110 a through 110 n (collectively referencedhereinafter as services 110) by means of one or more client processessuch as World Wide Web browser 107 or client process 112 communicatingover communications network 105. UE 101 also includes context engine 103that determines the local context of UE 101 and any user thereof, suchas local time, geographic position from a positioning system, ambienttemperature, pressures, sound and light, and applications currentlyexecuting on UE 101, content currently being rendered on UE 101, anduser input through a user interface (UI).

By way of example, the communication network 105 of system 100 includesone or more networks such as a data network (not shown), a wirelessnetwork (not shown), a telephony network (not shown), or any combinationthereof. It is contemplated that the data network may be any local areanetwork (LAN), metropolitan area network (MAN), wide area network (WAN),a public data network (e.g., the Internet), short range wirelessnetwork, or any other suitable packet-switched network, such as acommercially owned, proprietary packet-switched network, e.g., aproprietary cable or fiber-optic network, and the like, or anycombination thereof. In addition, the wireless network may be, forexample, a cellular network and may employ various technologiesincluding enhanced data rates for global evolution (EDGE), generalpacket radio service (GPRS), global system for mobile communications(GSM), Internet protocol multimedia subsystem (IMS), universal mobiletelecommunications system (UMTS), etc., as well as any other suitablewireless medium, e.g., worldwide interoperability for microwave access(WiMAX), Long Term Evolution (LTE) networks, code division multipleaccess (CDMA), wideband code division multiple access (WCDMA), wirelessfidelity (WiFi), wireless LAN (WLAN), Bluetooth®, Internet Protocol (IP)data casting, satellite, mobile ad-hoc network (MANET), and the like, orany combination thereof.

The UE 101 is any type of mobile terminal, fixed terminal, or portableterminal including a mobile handset, station, unit, device, multimediacomputer, multimedia tablet, Internet node, communicator, desktopcomputer, laptop computer, notebook computer, netbook computer, tabletcomputer, Personal Digital Assistants (PDAs), audio/video player,digital camera/camcorder, positioning device, television receiver, radiobroadcast receiver, electronic book device, game device, or anycombination thereof, including the accessories and peripherals of thesedevices, or any combination thereof. It is also contemplated that the UE101 can support any type of interface to the user (such as “wearable”circuitry, etc.).

By way of example, the UE 101 and user oriented services 110 communicatewith each other and other components of the communication network 105using well known, new or still developing protocols. In this context, aprotocol includes a set of rules defining how the network nodes withinthe communication network 105 interact with each other based oninformation sent over the communication links. The protocols areeffective at different layers of operation within each node, fromgenerating and receiving physical signals of various types, to selectinga link for transferring those signals, to the format of informationindicated by those signals, to identifying which software applicationexecuting on a computer system sends or receives the information. Theconceptually different layers of protocols for exchanging informationover a network are described in the Open Systems Interconnection (OSI)Reference Model.

Communications between the network nodes are typically effected byexchanging discrete packets of data. Each packet typically comprises (1)header information associated with a particular protocol, and (2)payload information that follows the header information and containsinformation that may be processed independently of that particularprotocol. In some protocols, the packet includes (3) trailer informationfollowing the payload and indicating the end of the payload information.The header includes information such as the source of the packet, itsdestination, the length of the payload, and other properties used by theprotocol. Often, the data in the payload for the particular protocolincludes a header and payload for a different protocol associated with adifferent, higher layer of the OSI Reference Model. The header for aparticular protocol typically indicates a type for the next protocolcontained in its payload. The higher layer protocol is said to beencapsulated in the lower layer protocol. The headers included in apacket traversing multiple heterogeneous networks, such as the Internet,typically include a physical (layer 1) header, a data-link (layer 2)header, an internetwork (layer 3) header and a transport (layer 4)header, and various application headers (layer 5, layer 6 and layer 7)as defined by the OSI Reference Model.

The client-server model of computer process interaction is widely knownand used. According to the client-server model, a client process sends amessage including a request to a server process, and the server processresponds by providing a service. The server process may also return amessage with a response to the client process. Often the client processand server process execute on different computer devices, called hosts,and communicate via a network using one or more protocols for networkcommunications. The term “server” is conventionally used to refer to theprocess that provides the service, or the host computer on which theprocess operates. Similarly, the term “client” is conventionally used torefer to the process that makes the request, or the host computer onwhich the process operates. As used herein, the terms “client” and“server” refer to the processes, rather than the host computers, unlessotherwise clear from the context. In addition, the process performed bya server can be broken up to run as multiple processes on multiple hosts(sometimes called tiers) for reasons that include reliability,scalability, and redundancy, among others. A well known client processavailable on most nodes connected to a communications network is a WorldWide Web client (called a “web browser,” or simply “browser”) thatinteracts through messages formatted according to the hypertext transferprotocol (HTTP) with any of a large number of servers called World WideWeb servers that provide web pages. For example, in some embodiments,the network services 110 are World Wide Web servers, and the UE 101 eachinclude the browser 107 with which to obtain those services.

The user oriented services 110 employ one or more backend services 120 athrough 120 n (collectively referenced hereinafter as backend services120) through corresponding application programming interfaces (APIs) 122a through 122 n (collectively referenced hereinafter as backend API122). Many backend services publish their network addresses and APIs andmessage protocols in a service registry 128. For example, a web servicesregistry includes UDDI (Universal Description, Discovery andIntegration), which is interrogated by Simple Object Access Protocol(SOAP) messages to provide access to Web Services Description Language(WSDL) documents describing the protocol bindings and message formatsrequired to interact with the web services listed in its directory.

In order to provide a user oriented application for UE 101, anapplication developer (which may be an individual or a team ofindividuals) writes a client process, such as client process 112, tointeract with the backend services 120, either directly, or indirectlythrough a user oriented service 110 also written by the developer; anddelivers the client process to the UE 101. In some cases, theapplication developer relies on the browser 107 on the UE 101 for a userinterface and writes the user oriented network service 110 thatinteracts with one or more backend services 120; and simply delivers tothe UE 101 a link for the service 110. Knowledge of all the backendservices 120 and their corresponding API, and corresponding protocols,often requires a great deal of experience from a technical savvydeveloper. Invoking a large number of these backend services may alsoinvolve a lot of storage and processing on the UE 101 or host of theservice 110.

In addition, for some user oriented applications, an appropriate actionby the application depends on particular content chosen by the user foroperation by the application, e.g., whether the user has taken aphotograph of a building or a corn field or a group of persons. Thebackend service 120 to be invoked often depends on what is representedby the content; for example, a facial recognitions service and a movieticket reservation service are not likely appropriate for a picture of acorn field provided by a user. Anticipating all such user providedcontents and programming interfaces to all appropriate backend serviceswould render many user oriented applications exceedingly large andcomplicated, and, thus, delay the development and delivery of suchapplications. Consequently, user oriented applications would benefitfrom a way to uniformly or dynamically identify appropriate functions ofbackend services 120, or both.

To address this problem, the system 100 of FIG. 1 introduces thecapability to identify network functions based on content and context onuser equipment. In the illustrated embodiment, the expanded capabilityincludes the function lookup service 130 and a function-concept-contextdata structure 134. The illustrated function lookup service 130 includesits own API 132, and zero or more indices 136, and serves as a singlegateway for multiple backend services 120. The indices 136, if present,allow the function lookup service 130 to efficiently find, in the datastructure 134, a backend service related to the user's current contentor context or both. The function lookup service 130 provides one or morebackend services 120 that can be looked up in service registry 128 andinvoked by a client 112 or user oriented service 110. The new functionlookup service 130 uses features extracted from user supplied contentand associated with the advanced backend services 120 in thefunction-concept-context storage 134 in order to suggest appropriatefunctions of the backend services 120. The client 112 or user orientedservice 110 determines a particular backend service 120, or functionthereof, based on the functions provided, and determines values for anyparameters required by the backend service 120 and sends those values inaccordance with the API 122 and corresponding protocol. Thefunction-concept-context data structure 134 and function lookup service130 are example means to achieve the advantage of simplifying theprocesses in client 112 and corresponding user oriented service 110, ifany, while providing a wide range of backend services 120. The clientprocess 112 thus consumes much less memory to provide the wide range ofbackend services than would a client that explicitly supported each ofthose backend services.

FIG. 2A is a diagram of a data structure entry 200 for storing afunction in association with one or more concepts or contexts. Althoughdata structures and fields are shown in FIG. 2A and FIG. 2B as integralblocks in a particular order for purposes of illustration, in otherembodiments, one or more data structures or fields, or portions thereof,are arranged in a different order in one or more data structures ordatabases on one or more nodes of a network, or are omitted, or one ormore additional fields are added, or the data structures are changed insome combination of ways.

In the illustrated embodiment entry 200 includes a service identifier(ID) field 202, a function identifier (ID) field 204, an API identifier(ID) field 206, a protocol field 208, a parameters field 210, adescription field 220, a media type field 230, a relevant concepts field240 and a relevant contexts field 250.

The service ID field 202 holds data that indicates one of the backendservices 120. Any method to identify the backend service in field 202may be used, such as network address for the service (e.g., an InternetProtocol, IP, address and Transfer Control Protocol port; or aprotocol-domain name-directory-filename), or a key into the serviceregistry 128 associated with that backend service, as is well known inthe art. The function ID field 204 holds data that indicates anindividual function, if any, of a backend service indicated in field202. The API ID field 206 holds data that indicates an API for thefunction indicated in field 204, such as a network address where the APIis published or an identifier for the API set itself within the service.The function is part of the particular API set. The protocol field 208holds data that indicates a message protocol for exchanging data withthe API indicated in field 206. In some embodiments, the API orprotocol, or both, are available at the service registry 128 at the keyindicated in field 202; and field 206, or field 208, or both,respectively, are omitted. Including the fields 206 or 208 or both areexample means of achieving the advantage of reducing network bandwidthto invoke a function of a backend service. Omitting field 206 or field208 or both are example means of achieving the advantage of reducing thestorage footprint of the function-concept-context data structure 134.

The parameters field 210 holds data that indicates the input parameters(for which values are to be provided to the function) and outputparameters (for which values are output from the function indentified infields 202 and 204). For example, the parameters field 210 holds datathat indicates input and output parameter names, units, and validranges, and default values, if any. In some embodiments, the parametersare available at the service registry 128 at the key indicated in field202; and field 210 is omitted. Including the field 210 is an examplemeans of achieving the advantage of reducing network bandwidth to invokea function of a backend service. Omitting the field 210 is an examplemeans of achieving the advantage of reducing the storage footprint ofthe function-concept-context data structure 134.

The description field 220 holds data such as text that describes theoperation performed by the function indentified in fields 202 and 204,which can be understood by an end user of UE 101. For example, thedescription field 220 holds text that states “Determine street addresscorresponding to GPS coordinates,” “Provide maps for a given location,”“Determine celebrity in a photo showing that celebrity's face,” “Reservetickets for shows at a participating theater,” “Book plane ticket todestination city,” “Reserve table at a participating restaurant,”“Determine title and artist of recording similar to sound sample,”“Determine market buying and selling prices for stocks and bonds,”“Determine market buying and selling prices for commodity,” “Determineretail outlet for a product,” “Provide recipes that include giveningredients,” “Issue payment from a bank account,” etc. In someembodiments, the description is available at the service registry 128 atthe key indicated in field 202; and field 220 is omitted. Including thefield 220 is an example means of achieving the advantage of reducingnetwork bandwidth to present to a user of UE 101 a function of a backendservice. Omitting the field 220 is an example means of achieving theadvantage of reducing the storage footprint of thefunction-concept-context data structure.

The media type field 230 holds data that indicates the types of media onwhich the function operates, e.g., image file formats, audio fileformats, video file formats, word processing document formats,spreadsheet formats, mark-up language formats, among others. Thisinformation is used as a discriminator, in some embodiments, to filterout functions that do not operate on the content provided by a user. Insome embodiments, the media types are available at the service registry128 at the key indicated in field 202; and field 230 is omitted.Including the field 230 is an example means of achieving the advantageof reducing network bandwidth to determine an appropriate function of abackend service. Omitting the field 230 is an example means of achievingthe advantage of reducing the storage footprint of thefunction-concept-context data structure.

The relevant concepts field 240 holds data that indicates whichconcepts, such as physical objects, of a concept identification libraryare relevant to the function identified in fields 202 and 204. Conceptlibraries of concepts that can be identified in images, audio or textare known. As used herein a concept is an entry in a semantic or objectlibrary and can represent tangible objects, such as persons and cars, orintangible objects such as stocks and bonds, or actions, such as skiing,swimming. Often the concepts are grouped into categories such asvehicles or buildings or aquatic or airborne etc. In some embodiments,the concepts entered in the relevant concepts field 240 are the specificconcepts or concept categories that the function applies to. Forexample, person concepts are relevant to facial recognition functionsand voice recognition functions (media type=images or audio,respectively), while foodstuffs are relevant to recipes functions (mediatype=text indicating foodstuff), and buildings are relevant to ticketpurchase and table reservations (media type=text indicating building),and products are relevant to retail outlet functions (media type=textindicating product). In some embodiments, concepts are expressed interms of an object or semantic vocabulary, or both, as described in moredetail below. In some embodiments, the concept is a concept of asemantic vocabulary, such as stocks or bonds. The concepts exist outsideof, and independent of, their digital representations in the contentprovided by the user. Field 240 is an example means of achieving theadvantage of associating a function of a backend system with a conceptthat may be represented in user content. Field 240 may be omitted insome embodiments that select functions purely on context and not onobjects or other concepts represented in content.

The relevant context field 250 holds data that indicates temporal orspatial or activity information that is relevant to the functionidentified in fields 202 and 204. In some embodiments, context isexpressed in terms of a context vocabulary, as described in more detailbelow, such as Monday, 10 AM, GPS position, communicating, operating ondocument, idle, absent, etc. Often the context includes context subjectsassociated with certain combinations of context vocabulary words, asdescribed in more detail below, such as working, exercising, sleeping,eating, recreating. For example, time of day and day of week arerelevant for banking functions; location is relevant to retail outletfunctions as well as ticket purchase and table reservations functions;season of year is relevant to recipes functions. Communicationactivities are relevant to text to speech or speech to text conversionfunctions. Field 250 is an example means of achieving the advantage ofassociating a function of a backend system with a context that may beassociated with a user of a device, such as UE 101. Field 250 may beomitted in some embodiments that select functions purely on conceptsrepresented in content, and not on context.

Any method may be used to indicate the context in field 250. In variousembodiments, a context vocabulary and topology is developed thatidentifies words and topics related to consumers' contexts. Any methodknown in the art may be used to generate the context vocabulary andtopology. For example, several documents are collected that discuss anddescribe consumer context, such as documents that describe thesignificance of whether the consumer is working for pay or performingother duties or at leisure, whether the current time is a weeknight orweekend, whether the current season is summer or winter, whether theconsumer is at home or away, or whether the consumer is at a destinationor en route, whether a document is invoking a place name or a personname, whether the consumer is stationary or moving and at what speedsand directions, whether it is light or dark, and what applications areavailable on a user equipment belonging to the consumer. These documentsare mined to determine words related to consumer context, collections ofwords related to context, or relative usage of those words, or somecombination. In some embodiments, the vocabulary topology includestopics imposed on or deduced from relative occurrences of words withinthe documents. For example, in various embodiments, probabilistic latentsemantic indexing (pLSI) or latent Dirichlet allocation (LDA), wellknown in the art, are used to deduce topics from words in a set ofdocuments. Such methods can be used to derive context words and contexttopics from a set of documents that are directed to the circumstances ofconsumers of network services. Because each topic is associated with agroup of words in certain relative abundances, there is a topologyrelating topics to words and subtopics to higher level topics. In someembodiments a context vocabulary is built manually or by relying on orextending some standard topology such as Open Directory Project (ODP)vocabulary. In these embodiments, LDA is not used in building thecontext vocabulary itself; but, once a vocabulary is established,documents can be mined using LDA to see what topics/context is containedwithin the document. The context vocabulary topology is used in variousembodiments described herein to determine UE 101 and backend servicescontexts.

In some embodiments, there are only two levels of categories, e.g.,topics and words, below the root level context vocabulary. Each topic isdefined by a set of words, each with a particular range of occurrencepercentages. In some of these embodiments, a vocabulary of V words isrepresented by a V-dimensional vector; and each word is represented by aV-dimensional vector with zeros in all positions but the position thatcorresponds to that particular word. Typically words of low meaning,such as articles, prepositions, pronouns and commonly used words areignored. Each of T topics is represented by a V-dimensional vector withrelative occurrences of each word in the topic represented by apercentage in the corresponding word positions. All topics arerepresented by a V×T matrix.

When a word from the context vocabulary is found in a document (e.g., adocument describing a backend service 120), that word is considered amixture of the different topics that include that word, with a percentprobability assigned to each topic based on the percentage of words inthe document, for example using the well known methods of LDA. As aresult, the entire document can be represented by a set of topics foundin the document with a probability metric assigned to each topic, e.g.,a T-dimensional vector with varying probabilities in each position ofthe vector. Such a vector is called a token herein. Two documents (suchas a description of a backend service and a description of the currentstate of a UE 101) can be compared by computing a similarity of the twoT-dimensional vectors (tokens) representing those documents, such as asum of products of corresponding terms. Alternatively, or in addition, adistance metric can be computed between the two documents, whichincreases as the two tokens become less similar. Any distance metric canbe used, such as an order zero distance (absolute value of thecoordinate with the largest difference), an order 1 distance (a sum ofthe absolute values of the T differences) an order two distance (a sumof the squares of the T differences—equivalent to the Euclideandistance), an order three distance (a sum of cubes of absolute values),etc. The more similar are tokens from two documents, or the smaller thedistance between those tokens, the more relevant are the documents toeach other. In the following description, it is assumed that a contextvocabulary has been defined and is stored in a context vocabulary datastructure. The context of a document or resource is represented by acontext token. The more similar the context tokens of two documents,e.g., the smaller the distance measure between them, the more relevantone document is to the consumer context indicated by the other document.

Context is not obtained only from mining a user text base but more oftendirectly on context data from the device. Thus, in some embodiments,context vocabulary is defined based on output from the context engine103 which reflects all context that can be inferred from the deviceside, e.g., as user location, current activity, transport mode (in car,in bus, driving etc), relations (social contacts), abstracted locationssuch as home, work etc.

For purposes of illustration, it is assumed that there is a contextvocabulary data structure (not shown) available to describe context. Itis further assumed that there is a different, whole-language, semanticvocabulary data structure (not shown) for all concepts of a language,such as is used in modern search engines. It is further assumed that, insome embodiments, objects are also represented by an objects vocabularyand topics in an objects data structure (not shown), for which objecttokens are defined. In some embodiments, there is also a mapping betweenthe concept vocabulary and topics, and the concepts in a databaserelating physical objects and other concepts to features extracted fromdifferent media, as described in more detail below.

Thus in some embodiments, the data in the relevant contexts field 250 isa list of one or more context tokens for the function indicated by field202 and 204. Similarly, in some embodiments, the data in the relevantconcepts field 240 is a list of one or more concept tokens for thefunction indicated by field 202 and 204.

FIG. 2B is a diagram of a data structure 260 for storing an index for afunction-concept-context data structure. Data structure 260 is anexample embodiment of indices data structure 136. When a concept isidentified in content provided at UE 101 by a user, it is oftenexpensive in computational resources to search every entry 200 in datastructure 134 for that concept. Therefore, in some embodiments an indexis derived from the function-concept-context entries 200 for eachconcept, or category of concepts, or both, or for each concept topic.Similarly, in some embodiments, an index is derived from thefunction-concept-context entries 200 for each context, or contextsubject, or both, or for each context topic. The indices 260 are examplemeans to achieve the advantage of reducing computational costs to findthe functions that are related to a known concept or context.

In the illustrated embodiment, the data structure 260 includes multipleindices. The first index includes a concept identifier field 262 and amatching function IDs field 264 for each concept or category or both inthe concepts database, as indicated by ellipsis. The concept identifierfield 262 holds data that indicates a concept ID or category from thedatabase or vocabulary of concepts. The matching function IDs field 264holds data that lists a function ID (as indicated by fields 202 and 204)for each function that includes the concept or category in the relevantconcepts field 240. In some embodiment only functions in which theprobability of the concept topic is greater than a threshold probabilityare included in the list.

Similarly, a second index includes a context field 272 and a matchingfunction IDs field 274 for each context word or subject or both in thecontext vocabulary, as indicated by ellipsis. The context field 262holds data that indicates context vocabulary word or subject from thecontext vocabulary. The matching function IDs field 274 holds data thatlists a function ID (as indicated by fields 202 ad 204) for eachfunction that includes the context in the relevant contexts field 250.In some embodiment only functions in which the probability of thecontext topic is greater than a threshold probability are included inthe list.

FIG. 3A is a diagram of modules 310 of a client process for using abackend function based on content or context at the client, according toone embodiment. By way of example, the client 112 on UE 101 includes oneor more components for providing content and context to the functionlookup service and presenting a suggested function to a user of UE 101for implementing an application on the UE 101. It is contemplated thatthe functions of these components may be combined in one or morecomponents or performed by other components of equivalent functionality,for example on a user oriented service 110 or within the function lookupservice 130. In the illustrated embodiment, the client modules 310include a graphical user interface (GUI) module 311 for interacting witha user of UE 101, a context engine interface module 313 for interactingwith a context engine 103 on the UE 101, a content generator module 315to provide content to be used by the application, a media identifiermodule 317 for determining the media type of the content generated bymodule 315, and a service interface module 319 for interacting with auser oriented service 110.

The GUI module 311 presents graphical elements on a display of the UE101 and detects user operation of one or more input devices, such as atouch screen, to allow the user of UE 101 to control the contentgenerator and select a function identified based on the generatedcontent. The context engine interface module 313 interacts with thecontext engine 103 to determine the temporal, spatial and activityconditions of the UE 101. In some embodiments, the GUI module 311comprises markup statements and forms in a web page sent to browser 107.

The content generator 315 produces content to be used by the applicationfor the UE 101, such as a file transfer process that downloads contentfrom a service 110, an audio capture process to generate an audio filefrom sound detected on a microphone of the UE 101, an image or videocaptures process to generate an image or video file from a digitalcamera, a user input capture process to generate a text file or documentfile or spreadsheet or drawing file based on user operation of one ormore input devices. The media type identifier module 317 determines thetype of media of the content produced by content generator module 315.

The user oriented service interface module 319 interacts with a useroriented service 110 that participates in the UE 101 application, ifany. In some embodiments, the user oriented service 110 is omitted; andthe user oriented service modules 320 are divided between the client 112and the function lookup service 130; and, the user oriented serviceinterface module 319 is replaced by a function lookup service interfacemodule.

Once the user has been presented through the GUI module 311 with achoice of one or more functions returned by the interface module 319,and chosen which function to use, the client 112 or user orientedservice 110 will fill in missing input parameters for that function,e.g., based on the current context or concept represented, or both. If aparameter value cannot be determined automatically, the GUI module 311causes the user to be prompted to fill in any remaining fields. Once allthe parameters are filled, the client 112, or user oriented service 110,passes the information for the selected function to the backend service120 to service the request. The results are either directly sent toclient 112 by the backend service 120 or passed on through the useroriented service 110 or function lookup service 130.

FIG. 3B is a diagram of modules 320 of a user oriented service 110,according to one embodiment. By way of example, a user oriented service110 includes one or more components for providing content and context tothe function lookup service and presenting a suggested function to auser of UE 101 for implementing an application on the UE 101. It iscontemplated that the functions of these components may be combined inone or more components or performed by other components of equivalentfunctionality, for example on the client process 112 or within thefunction lookup service 130. The user oriented service modules 320include a client interface module 321, a media feature extractor module323, and concept identification module 325 with a concept-features datastructure 327, a function lookup service interface 328, and a serviceregistry interface module 329.

The client interface module 321 controls interactions with the clientprocess 112, or browser 107, to receive the content and context from theUE 101 and to present one or more functions provided by the functionlookup service 130.

The media feature extractor module 323 uses an appropriate media enginethat extracts one or more features (such as statistics, histograms,clusters, amplitudes of Fourier or wavelet or principal components, ormeasures of texture or other properties) from the media. The featurelist is further processed, extracting any patterns, and the patterns arepassed to the concept identification module 325.

The concept identification module 325 relies on a concept-featuresdatabase 327 and performs search and pattern analysis to identify anobject or other concept from the database 327 which most closely matchesthe media features list or pattern. Once the object or concept has beenidentified, the concept identifier for that object or other concept ispassed on to the function lookup service through interface 328. Theconcept identification module and concept-features data structure 327are example means to achieve the advantage of automatically deriving aconcept represented in content created in, or provided to, anapplication by a user.

The function lookup service interface 328 module controls interactionswith the function lookup service 130 to send the context and conceptidentifier based on the content to the service 130, and to receive oneor more functions provided by the function lookup service 130. Theinterface 328 is an example means to achieve the advantage of avoiding arepetition of a function selection process on every user orientedservice 110 that supports a client application.

The service registry interface module 329 allows the user orientedservice 110 to find out from the service registry 128 useful details ofthe functions provided by the function lookup service 130. Usefuldetails include API, protocol, input and output parameters, anddescription. In some embodiments, all such details are provided by thefunction lookup service 130 through the interface 328; and, module 329is omitted.

FIG. 3C is a diagram of modules 330 of a function lookup service,according to one embodiment. By way of example, the function lookupservice 130 includes one or more components for indicating a function ofa backend service 120 based on content and context. It is contemplatedthat the functions of these components may be combined in one or morecomponents or performed by other components of equivalent functionality,for example on the client process 112 or within a user oriented service110, if any. The function lookup modules 330 include an API 132 (asdepicted in FIG. 1), a function identifier 333 with afunction-concept-context storage data structure 134 (as depicted in FIG.1), a relevance and recommendation module 337, and a build database (DB)module 338.

The API 132 is used to receive commands to perform the functions offunction identification based on user provided content or context orboth. The function identifier module 333 determines a function in thedata structure 134 associated with the concept identified by module 325based on the user content, and, in some embodiments, also associatedwith context of the UE 101. The API 132 is an example means to achievethe advantage of replacing code to interact with all APIs 122 for allbackend services 120 with simpler code to interact only with the singleAPI 132 of the function lookup service 130. The simper code consumesless storage space on the client process 112 or user oriented service110, and speeds development.

The relevance and recommendation module 337 determines how many andwhich associated functions to return. For example, the module 337 usesthe context of UE 101 compared to the context structure for the suppliedfunction and identifies the best set of functions to be passed back toclient based on the context data received. In some embodiments, themodule 337 also constructs context structures for each function wherecertain context fields may be empty or unavailable. These chosenfunctions along with their associated context structures are passed backto the client, e.g., directly to client 112 or indirectly to client 112or browser 107 through the user oriented service 110. The relevance andrecommendation module 337 is an example means to achieve the advantageof sending a small set of most relevant functions to the client process112 for presentation to a user.

In a background process, the build DB module 338 populates thefunction-concept-context data structure, as described in more detailbelow with reference to FIG. 6. In some embodiments, the build DB module338 uses the service registry 128 and function database to search forall functions supported by registered services for a particular conceptor context concept. In some embodiments, module 338 also retrievescontext or concept tokens or structures defined by the backend services120 that associate a particular function with appropriate contexts.

FIG. 4 is a flowchart of a process 400 for function lookup, according toone embodiment. In one embodiment, the function lookup service 130performs the process 400 and is implemented in, for instance, a chip setincluding a processor and a memory as shown in FIG. 9 or general purposecomputer as depicted in FIG. 8. In some embodiments, a user orientedservice 110 performs one or more steps of process 400. Although methodsare shown in FIG. 4, and subsequent flowcharts FIG. 5 and FIG. 6, asintegral steps in a particular order for purposes of illustration, inother embodiments, one or more steps or portions thereof are performedin a different order, or overlapping in time, in series or parallel, orare omitted, or one or more additional steps are added, or the processis changed in some combination of ways.

In step 401, the function-concept-context data structure 134 is built orupdated. For example, one or more databases or tables thereof arepopulated with data for the fields depicted in FIG. 2A. More details onstep 401 are described below with reference to FIG. 6. Thus, a datastructure is formed that associates each function of a plurality offunctions provided by a plurality of network services (e.g., backendservices 120) with at least one identifier for a concept or at least oneidentifier for a device context, or both. When context data is alsoincluded in the data structure, step 401 is an example means for formingthe data structure that associates each function of the plurality offunctions provided by the plurality of network services with at leastone identifier for device context (e.g., at UE 101) associated with thecontent.

In step 403, the content in use by a client process and associatedcontext are determined. Thus, step 403 is an example means fordetermining first data that indicates a current content and an examplemeans for determining second data that indicates a current context forthe device (e.g., UE 101). For example, the content is determined byclient 112 to be an image with metadata provided by the digital cameraas content generator; and the context is determined by the client 112 asa context token based on the metadata or output from context engine 103,or both. When step 403 is performed by user oriented service 110,content and context are determined based on the image and context sentby the client. When step 403 is performed by function lookup service130, content and context are determined based on the content or mediafeatures or concept identifier and context token sent by the client 112or user oriented service 110. Thus step 403 is an example means fordetermining the second data that indicates the current context for thedevice by receiving a message that indicates the second data.

In step 405, a concept is determined based on the content in use at theUE 101. In some embodiments, the concept is determined by the client 112or user oriented service 110, which includes the concept identificationmodule 325. In these embodiments, the concept is determined at thefunction lookup service 130 based on the concept identifier received ina message from the client 112 or user oriented service 110. In someembodiments, the concept is determined by the function lookup service110 that includes the concept identification module 325 based on contentor media features received in a message from the client 112 or useroriented service 110. In some embodiments the concept is determinedbased, at least in part, on the context also. For example, based on animage it is determined that the concept is a building, and based on thecontext that indicates an associated position or both position andorientation, that the building is a particular building having aparticular address, such as a theater. Thus step 405 determines firstdata that indicates a concept represented in content provided by adevice, such as UE 101.

In step 407, the function lookup service 130 determines one or morecandidate functions of backend services 120 by searching thefunction-concept-context data structure 134 for functions that includethe concept identifier in the relevant concepts field 240 and thecontext in the relevant contexts field 250, e.g., with a probabilityabove a threshold probability. Thus step 407 is an example means fordetermining the function provided by a backend network service based onthe first data that indicates the concept by finding in the datastructure an association between the function and an identifier for theconcept. In some embodiments, if no function passes the threshold, thethreshold is lowered until at least one function passes the threshold.Thus step 407 determines, based on the first data that indicates aconcept, a function provided by a network service. When context is alsoconsidered, step 407 is an example means for finding in the datastructure an association between the function and an identifier fordevice context that includes the current context for the device (e.g.,UE 101) associated with the content.

Thus, step 407 is an example means for determining the first data thatindicates the concept represented in content provided by the device byreceiving a message that indicates a media type feature based on thecontent and determining the first data that indicates the concept basedon the media type feature. When only the content is sent, step 407 is anexample means for determining the first data that indicates the conceptrepresented in content provided by the device by receiving a messagethat indicates the content, then determining a media type feature basedon the content, and then determining the first data that indicates theconcept based on the media type feature.

When step 407 also uses the context to find the candidate function, thenstep 407 is an example means for determining the function provided bythe network service by determining the function based, at least in part,on second data that indicates a current context for the device (e.g., UE101).

If step 407 is performed by the client process 112 or user orientedservice 110, step 407 is performed by sending the content or mediafeature or concept and/or context to the function lookup service 130.

In step 409, at least one of the candidate functions is recommended. Ifstep 409 is performed by the function lookup service 130, then thecandidate functions are passed to the relevance and recommendationmodule 337 to determine the most relevant functions to recommend basedon the concept contained in the user provided content or the context,e.g., based on a similarity measure or distance metric between concepttokens or between context tokens or both. If step 409 is performed bythe client 112 or user oriented service 110, step 409 is performed bysending the content or media feature or concept and/or context to thefunction lookup service 130.

In step 411, the recommended function is caused to be presented to theuser. If step 411 is performed by the function lookup service 130, thenthe recommended functions is passed to the user oriented service 110 orto the client process 112. If step 411 is performed by the user orientedservice 110, step 411 is performed by sending the recommended functionsreceived from the function lookup service 130 to the client process 112or browser 107. Thus, step 411 causes, at least in part, actions thatresult in transmitting a message that indicates the function. If step411 is performed by the client process 112, then step 411 is performedby the GUI module 311 based on a recommended service received directlyfrom the function lookup service 130 or indirectly through the useroriented service 110. Thus step 411 is an example means for causing, atleast in part, actions that result in presenting, at the device (e.g.,UE 101), a description of the function.

In step 413, the recommended function is caused to be invoked. If step413 is performed by the function lookup service 130, then therecommended functions is caused to be invoked by passing the recommendedfunction to the user oriented service 110 or to the client process 112.If step 413 is performed by the user oriented service 110, step 413 isperformed by receiving a message indicating the user has selected one ofthe recommended functions and then invoking the backend service withvalues for the input parameters, as described in more detail below withreference to FIG. 5. If step 413 is performed by the client process 112,then step 413 is performed by invoking the backend service with valuesfor the input parameters received via GUI module 311. Thus, step 413 isan example means for causing, at least in part, actions that result ininvoking the function provided by the network service.

In step 415, it is determined if end conditions are satisfied. If so,the process ends. Otherwise control passes back to step 401 to updatethe function-concept-context data structure and to step 403 to determinethe next content in use by a client process.

FIG. 5 is a flowchart of a process for an application that uses functionlookup, according to one embodiment. In one embodiment, the useroriented service 110 performs the process 500 and is implemented in, forinstance, a general purpose computer as depicted in FIG. 8. In someembodiments, a client process 112 performs one or more steps of process500.

In step 501, the content used by a client process and associated context(e.g., of UE 101) are determined. In embodiments in which step 501 isperformed by the user oriented service 110, step 501 is performed byreceiving a message from the client that indicates the content, or mediafeatures of the content, and the context, such as one or more contexttokens. If performed by the client process 112, step 501 includesobtaining the content from the content generator module 315 and thecontext from the context engine interface 313. An interface to prompt auser of UE 101 for content and context is described in more detail belowwith reference to FIG. 7A and FIG. 7B.

In step 503, media features or concepts represented in the content aredetermined. If performed by the client process 112 in embodiments withthe user oriented service 110, then step 503 includes obtaining themedia type from the media type identifier 317 and sending the content,media type and context to the user oriented service 110. If performed bythe client process 112 in embodiments without the user oriented service110, then, in some embodiments, step 503 includes obtaining the mediatype from the media type identifier 317 and sending the content, mediatype and context to the function lookup service 130; and, in otherembodiments, includes sending the content to the appropriate mediafeature extractor module 323; and, in still other embodiments, includessending the list of media features to the concept identification module325.

If performed by the user oriented service 110, then, in the illustratedembodiment, step 503 includes obtaining the media type from a media typeidentifier module 317 (or the message from the client process 112, insome embodiments), and sending the content to the appropriate mediafeature extractor module 323. Then the list of media features is sent tothe concept identifier module 325. In various other embodiments, theuser oriented service 110 does not include the concept identificationmodule 325 and does not determine the concept.

In step 505, the context and list of features (or concept identifier) issent to the function lookup service 130, e.g., from the user orientedservice 110 in some embodiments, or directly from the client process 112in some embodiments. In some embodiments, user oriented service 110sends the list of media features and the context to the function lookupservice 130, and lets the service 130 determine the concept from themedia features. Thus step 505 is an example means for determining thefunction provided by the network service by sending a message thatindicates the first data (identifying a concept) to a service (lookupservice 130) that associates, with each function of a plurality offunctions provided by network services (e.g., backend services 120),data that indicates an identifier for a concept and data that indicatesan identifier for context of a device (e.g., in function-concept-contextdata structure 134).

In step 507, one or more recommended functions of backend services 120are received from the function lookup service 130. In some embodiments,the recommended functions are identified simply by the backend serviceID from field 202 and, if different, the function ID from field 204. Insome embodiments, the data indicating the recommended function includesone or more of the API ID from field 206, the protocol from field 208,the parameters from field 210, the description from field 220 and themedia type from field 230. In some embodiments, the information for oneor more such fields are obtained during step 507 from the serviceregistry 128 using the service registry interface module 328, based onthe backend service ID as a key.

In step 509, data indicating the recommended function is caused to bepresented to the user on UE 101, e.g., based on the description of thefunction such as is stored in field 220. In embodiments in which step509 is performed by the client process 112, the data indicating therecommended function is presented through GUI module 311. In embodimentsin which step 509 is performed by the user oriented service 110 or thefunction lookup service 130, the data indicating the recommendedfunction is sent to the browser 107 or client process 112 to bepresented through GUI module 311. Such a GUI is described in more detailbelow with reference to FIG. 7C.

In step 511, it is determined whether the user has selected one of therecommended functions, e.g., by operating a pointing device as describedin more detail below with reference to FIG. 7C. If not, then controlpasses back to step 501 to determine the next content or context or bothat UE 101. For purposes of illustration, it is assumed that the contentis an image of a corn field, and that the user has selected therecommended function described as “Determine market prices forcommodity”.

If a user selection is determined in step 511, then in step 513 theparameters for the selected function are determined. In someembodiments, the parameters are provided by the function lookup service130 during step 507. In various other embodiments, the parameters aredetermined from the registry 128 based on a backend service ID as a keyand, if any, a function ID during step 507 or during step 513. Forpurposes of illustration, it is determined that the input parameters forthe selected function include, “commodity name,” “geographic location,”and “date.”

In step 515, known values for the input parameters are determined, e.g.,based on the context information. For example, based on the conceptidentifier, the content is known to represent “corn” and from thecontext, the GPS position of the UE 101 when the image was captured isknown, and the current date is known. Thus values for all three inputparameters are known. If another parameter is required that is not knowna default value is used or the value is marked unknown.

In step 519, the user is prompted to revise values for the inputparameters. In embodiments in which step 519 is performed by the clientprocess 112, the data indicating the input parameters and pre-filledvalues is presented through GUI module 311. In embodiments in which step519 is performed by the user oriented service 110 or the function lookupservice 130, the data indicating the input parameters and pre-filledvalues are sent to the browser 107 or client process 112 to be presentedthrough GUI module 311. Such a GUI is described in more detail belowwith reference to FIG. 7D. During step 519, the user may change one ormore values of the input parameters. For example, the user may providevalues for parameters that were marked unknown. For purposes ofillustration it is assumed that during step 519, the date is changed bythe user from the date of the picture to a future date when the corn isready to harvest or a contract is to be signed to sell the corn.

In step 521, the selected function is invoked. For example, in someembodiments, the user oriented service 110 sends, to a backend service120, a message in the appropriate protocol with parameters and valuesaccording to the appropriate API, including indicating the selectedfunction, if any. In some embodiments, the client process 112 sends, tothe backend service 120, a message in the appropriate protocol withparameters and values according to the appropriate API, includingindicating the selected function, if any. In response, during step 521,results from the invoked function are received. For purposes ofillustration, it is assumed that the results include data that indicatesan average price and a list of buyers of corn.

In step 523, the results are caused to be presented to the user on UE101. In embodiments in which step 523 is performed by the client process112, the data indicating the results is presented through GUI module311. In embodiments in which step 523 is performed by the user orientedservice 110 or the function lookup service 130, the data indicating theresults is sent to the browser 107 or client process 112 to be presentedthrough GUI module 311. Such a GUI is described in more detail belowwith reference to FIG. 7E.

In step 525, it is determined if end conditions are satisfied. If so,the process ends. Otherwise control passes back to step 501 to determinethe next content in use by a client process and the associated context.

FIG. 6 is a flowchart of a process 600 for building afunction-concept-context data structure, according to one embodiment. Inone embodiment, the function lookup service 130 performs the process 600and is implemented in, for instance, a chip set including a processorand a memory as shown in FIG. 9 or general purpose computer as depictedin FIG. 8.

In step 601, a backend service is determined to add to thefunction-concept-context storage data structure. For example, in someembodiments, a registry of one or more backend services is queried toobtain a list of backend services. In some embodiments, a web page ismade available where administrators of backend services can upload ormanually input data indicating those backend services. In someembodiments, individual functions, APIs, protocols, parameters,description or media types, or some combination, are also determinedduring step 601.

In step 603, a service not yet added to the function-concept-contextstorage data structure is selected as the current service. For example,the next service in a list of backend services retrieved from a serviceregistry 128 is selected as the current service.

In step 605, a function not yet added to the function-concept-contextstorage data structure is selected as the current function. For example,in some embodiments, one or more parameters of an API are associatedwith one function of multiple functions available at the backendservice. For example, a service for commodity markets includes oneseller function for finding a buyer and buy price for a commodity and aseparate buyer function for finding a seller and sell price for acommodity. One of those functions is taken as the current function.

In step 607, one or more concepts of the concept database 327 orvocabulary are associated with the current function. For example, asemantic analysis of the description of the function determines that thefunction is related to commodities. The semantic analysis furtherdetermines that commodities include certain semantic vocabulary words,such as petroleum, byproducts of petroleum, crude oil, heating oil,propane, natural gas, coal, wheat, oat, corn, rice and soybean, coffee,cocoa, sugar, cotton and orange juice, cattle, pork bellies and leanhogs. Of these, it is determined in step 607 which of these words areconcepts in the concepts that are included in the concept database orsimilar to those words, such as gas tanks, oranges, orchards, and pigs.These concepts and topics that include these concepts are determined instep 607. While the list may be long, as for commodities, it excludesmany concepts, such as people, buildings and vehicles excluded fromcommodities.

In step 609, one or more contexts of a context vocabulary and topicsdatabase are associated with the current function. For example, acontext semantic analysis of the description of the function andparameters determines that the function is related to place and time andthe activities of buying and selling.

In step 611, entries 200 for the function-concept-context storage aregenerated and stored. For example, a new entry 200 is added to thefunction-concept-context data structure 134. The new entry 200 includesan identifier for the current backend service in field 202, anidentifier for the current function in field 204, and other informationfor the function, as appropriate in fields 206 through 230. The newentry 200 also includes the list of identifiers for commodity conceptsin relevant concepts field 240, and context vocabulary tokens and wordsfor place, time, buying, selling in the relevant contexts field 250.

In step 613, it is determined whether there is another function for thecurrent service. If so, then control passes back to step 605, describedabove, to determine the next function of the service to make current. Ifnot, then, in step 615, it is determined whether there is anotherbackend service from the list. If so, then control passes back to step603, described above, to determine the next backend service to makecurrent.

If there are not further services or functions to add, then, in step617, one or more search indices are built. For example, for each word inthe concept database, an entry is made in the indices data structure280. For example, the service identifier and function identifier for thesell commodities function is added in field 264 for each concept IDfield 262 that lists one of the commodities. Similarly, for each word ortopic in the context vocabulary, an entry is made in the indices datastructure 280. For example, the service identifier and functionidentifier for the sell commodities function is added in field 274 foreach context field 272 that lists one of the contexts time, place,buying or selling. In some embodiments, an index is not formed and step617 is omitted.

In step 619, it is determined if end conditions are satisfied. If so,the process ends. Otherwise control passes back to step 601 to determinethe next service that has not yet been added to thefunction-concept-context storage data structure 134.

FIGS. 7A-7E are diagrams of user interfaces utilized in the processes ofFIG. 5, according to various embodiments. A graphical user interface(GUI) includes one or more graphical components that each comprise a setof picture elements (pixels) that cover an area of a display screen,such as display device 814 or 1007 described below. A graphicalcomponent may include a mechanism to detect user input associated withthe area, e.g., in response to a pointing device, such as a touch on atouch screen or a click of a button on a mouse or keypad (e.g., inputdevice 812 or keyboard 1047) when a cursor is displayed in the area.

FIG. 7A is a diagram of an example GUI 701 on UE 101 for determiningcontent in use. The current content presentation area 710 presents arepresentation of the current content on the UE 101, such as an image orvideo in a camera viewfinder, or web browser, or a graph of acousticpressure or frequency during streaming audio. The capture content labelarea 712 presents data that prompts the user to select the contentcurrently represented in the area 710 for further use. A button 714 is agraphical component input mechanism that when selected by a user causesthe current content to be selected for further use. For example, thecurrent content presentation area 710 presents a view of a corn field ina digital camera application, or view of a bill in a bankingapplication, or a picture of the skyline of Shanghai downloaded in apicture application. When the OK button 714 is activated, e.g., bytouching the button on a touch screen or pressing a keyboard keyassociated with the label, or clicking a mouse button or button on someother pointing device, the content represented in area 710 is capturedfor further use, e.g., in one or more files on UE 101.

FIG. 7B is a diagram of an example GUI 702 on UE 101 for labelingcontent in use. The name content input area 720 includes a text box forthe user to input text and a prompt indicating the text should indicatea name for the captured content. In response to the prompt, a user typesin a name for the content, e.g., picture A, or picture B, or picture Cand activates the OK button 724 a. The describe content input area 720includes a text box for the user to input text and a prompt indicatingthe text should indicate a description for the captured content. Inresponse to the prompt, a user types in a description for the content,e.g., survey owned land, or Shanghai skyline, or electricity bill andactivates the OK button 724 b.

FIG. 7C is a diagram of an example GUI 703 on UE 101 for selecting afunction appropriate for the selected content in use. The functionselection options area 730 includes a prompt area 731 that presents aprompt indicating the user should select a function to operate on thecontent in use. The recommended functions are presented as descriptionslisted in function description areas 334 a through 334 e (collectivelyreferenced hereinafter as function description areas 334). In someembodiments, the function description in fields 334 includes anidentifier for the concept found in the content or context associatedwith the content that led to a match with the function.

More functions may be represented than can fit in the function selectionoptions area 730 using a scroll bar 736 graphical component, well knownin the art, to slide the descriptions of recommended functions up ordown in the area 730. Associated with each function description area 334is a radio button 738. As a user selects a function to operate on thecontent, a solid circle is placed inside the radio button. In theillustrated GUI, the functions described by function description area334 b and 334 d are indicated as selected by the user. The selection iscompleted by activating the select button 732.

For purposes of illustration it is assumed that, based on the image ofthe corn field in picture A described as “survey owned land,” and theexample function descriptions described above for field 220, the process500 identified the concept “corn” and determined the recommendedfunctions that are presented as the following descriptions, includingthe identifier for corn, in function description areas 334:

-   -   Provides maps for a given location=position of picture A;    -   Determines market buying and selling prices for commodity=corn;    -   Determines retail outlet for a product=corn;    -   Provides recipes that include given ingredients=corn.

For purposes of further illustration, it is assumed that, based on theimage in picture B described as “Shanghai skyline,” and the examplefunction descriptions described above for field 220, the process 500identified the concept “building” and context place=Shanghai anddetermined the recommended functions that are presented as the followingdescriptions, including the identifier for context location, in functiondescription areas 334:

-   -   Provide maps for a given location=Shanghai;    -   Reserve tickets for shows at a participating theater=in        Shanghai;    -   Book plane ticket to destination city=Shanghai;    -   Reserve table at a participating restaurant=in Shanghai;

For purposes of further illustration it is assumed that, based on theimage in picture C described as “electricity bill,” and the examplefunction descriptions described above for field 220, the process 500identified the concept “letter” and concept “electricity” and thecontext “bill payment” and determined the recommended functions that arepresented as the following descriptions, including the identifier forelectricity, in function description areas 334:

-   -   Determine market buying and selling prices for        commodity=electricity;    -   Determine retail outlet for a product=electricity;    -   Issue payment from a bank account.

FIG. 7D is a diagram of an example GUI 704 on UE 101 for determininginput parameter values for selected functions. The parameter value inputarea for selected functions 740 a, 740 b, 740 c, among others indicatedby ellipsis (collectively referenced hereinafter as parameter inputareas 740) presents data indicating a parameter name, units ifapplicable, and acceptable range that are input for one of the selectedfunctions. Known values are pre-filled, and unknown values so marked. Inthe illustrated embodiment, all parameters for one selected function arepresented in one of the areas 740. An OK button 744 a, 744 b, 744 c(collectively referenced hereinafter as OK buttons 744) corresponds toeach area 740. The user may fill any unknown value and replace anypre-filled value in any area 740. When the OK button 744 is activated,the input parameter values are sent to the corresponding backend servicein a message requesting service. For example, in booking a plane ticketto Shanghai, the pre-filled departure airport is the city airportclosest to the user's position when the picture of Shanghai isdownloaded; but the user may wish to depart from a different city andwill therefore replace the departure city in the parameter value inputarea 740, then press the OK button 744.

FIG. 7E is a diagram of an example GUI 705 on UE 101 for presenting theresults of selected functions. The selected function result presentationareas 750 a, 750 b, among others indicated by ellipsis (collectivelyreferenced hereinafter as result presentation areas 750) presents dataindicating the results of the selected functions, such as the buyingprice for corn, or recipe using corn as an ingredient.

The processes described herein for identifying network functions basedon content may be advantageously implemented via software, hardware,firmware or a combination of software and/or firmware and/or hardware.For example, the processes described herein, including for providinguser interface navigation information associated with the availabilityof services, may be advantageously implemented via processor(s), DigitalSignal Processing (DSP) chip, an Application Specific Integrated Circuit(ASIC), Field Programmable Gate Arrays (FPGAs), etc. Such exemplaryhardware for performing the described functions is detailed below.

FIG. 8 illustrates a computer system 800 upon which an embodiment of theinvention may be implemented. Although computer system 800 is depictedwith respect to a particular device or equipment, it is contemplatedthat other devices or equipment (e.g., network elements, servers, etc.)within FIG. 8 can deploy the illustrated hardware and components ofsystem 800. Computer system 800 is programmed (e.g., via computerprogram code or instructions) to identify network functions based oncontent as described herein and includes a communication mechanism suchas a bus 810 for passing information between other internal and externalcomponents of the computer system 800. Information (also called data) isrepresented as a physical expression of a measurable phenomenon,typically electric voltages, but including, in other embodiments, suchphenomena as magnetic, electromagnetic, pressure, chemical, biological,molecular, atomic, sub-atomic and quantum interactions. For example,north and south magnetic fields, or a zero and non-zero electricvoltage, represent two states (0, 1) of a binary digit (bit). Otherphenomena can represent digits of a higher base. A superposition ofmultiple simultaneous quantum states before measurement represents aquantum bit (qubit). A sequence of one or more digits constitutesdigital data that is used to represent a number or code for a character.In some embodiments, information called analog data is represented by anear continuum of measurable values within a particular range. Computersystem 800, or a portion thereof, constitutes a means for performing oneor more steps of identifying network functions based on content.

A bus 810 includes one or more parallel conductors of information sothat information is transferred quickly among devices coupled to the bus810. One or more processors 802 for processing information are coupledwith the bus 810.

A processor (or multiple processors) 802 performs a set of operations oninformation as specified by computer program code related to identifyingnetwork functions based on content. The computer program code is a setof instructions or statements providing instructions for the operationof the processor and/or the computer system to perform specifiedfunctions. The code, for example, may be written in a computerprogramming language that is compiled into a native instruction set ofthe processor. The code may also be written directly using the nativeinstruction set (e.g., machine language). The set of operations includebringing information in from the bus 810 and placing information on thebus 810. The set of operations also typically include comparing two ormore units of information, shifting positions of units of information,and combining two or more units of information, such as by addition ormultiplication or logical operations like OR, exclusive OR (XOR), andAND. Each operation of the set of operations that can be performed bythe processor is represented to the processor by information calledinstructions, such as an operation code of one or more digits. Asequence of operations to be executed by the processor 802, such as asequence of operation codes, constitute processor instructions, alsocalled computer system instructions or, simply, computer instructions.Processors may be implemented as mechanical, electrical, magnetic,optical, chemical or quantum components, among others, alone or incombination.

Computer system 800 also includes a memory 804 coupled to bus 810. Thememory 804, such as a random access memory (RAM) or other dynamicstorage device, stores information including processor instructions foridentifying network functions based on content. Dynamic memory allowsinformation stored therein to be changed by the computer system 800. RAMallows a unit of information stored at a location called a memoryaddress to be stored and retrieved independently of information atneighboring addresses. The memory 804 is also used by the processor 802to store temporary values during execution of processor instructions.The computer system 800 also includes a read only memory (ROM) 806 orother static storage device coupled to the bus 810 for storing staticinformation, including instructions, that is not changed by the computersystem 800. Some memory is composed of volatile storage that loses theinformation stored thereon when power is lost. Also coupled to bus 810is a non-volatile (persistent) storage device 808, such as a magneticdisk, optical disk or flash card, for storing information, includinginstructions, that persists even when the computer system 800 is turnedoff or otherwise loses power.

Information, including instructions for identifying network functionsbased on content, is provided to the bus 810 for use by the processorfrom an external input device 812, such as a keyboard containingalphanumeric keys operated by a human user, or a sensor. A sensordetects conditions in its vicinity and transforms those detections intophysical expression compatible with the measurable phenomenon used torepresent information in computer system 800. Other external devicescoupled to bus 810, used primarily for interacting with humans, includea display device 814, such as a cathode ray tube (CRT) or a liquidcrystal display (LCD), or plasma screen or printer for presenting textor images, and a pointing device 816, such as a mouse or a trackball orcursor direction keys, or motion sensor, for controlling a position of asmall cursor image presented on the display 814 and issuing commandsassociated with graphical elements presented on the display 814. In someembodiments, for example, in embodiments in which the computer system800 performs all functions automatically without human input, one ormore of external input device 812, display device 814 and pointingdevice 816 is omitted.

In the illustrated embodiment, special purpose hardware, such as anapplication specific integrated circuit (ASIC) 820, is coupled to bus810. The special purpose hardware is configured to perform operationsnot performed by processor 802 quickly enough for special purposes.Examples of application specific ICs include graphics accelerator cardsfor generating images for display 814, cryptographic boards forencrypting and decrypting messages sent over a network, speechrecognition, and interfaces to special external devices, such as roboticarms and medical scanning equipment that repeatedly perform some complexsequence of operations that are more efficiently implemented inhardware.

Computer system 800 also includes one or more instances of acommunications interface 870 coupled to bus 810. Communication interface870 provides a one-way or two-way communication coupling to a variety ofexternal devices that operate with their own processors, such asprinters, scanners and external disks. In general the coupling is with anetwork link 878 that is connected to a local network 880 to which avariety of external devices with their own processors are connected. Forexample, communication interface 870 may be a parallel port or a serialport or a universal serial bus (USB) port on a personal computer. Insome embodiments, communications interface 870 is an integrated servicesdigital network (ISDN) card or a digital subscriber line (DSL) card or atelephone modem that provides an information communication connection toa corresponding type of telephone line. In some embodiments, acommunication interface 870 is a cable modem that converts signals onbus 810 into signals for a communication connection over a coaxial cableor into optical signals for a communication connection over a fiberoptic cable. As another example, communications interface 870 may be alocal area network (LAN) card to provide a data communication connectionto a compatible LAN, such as Ethernet. Wireless links may also beimplemented. For wireless links, the communications interface 870 sendsor receives or both sends and receives electrical, acoustic orelectromagnetic signals, including infrared and optical signals, thatcarry information streams, such as digital data. For example, inwireless handheld devices, such as mobile telephones like cell phones,the communications interface 870 includes a radio band electromagnetictransmitter and receiver called a radio transceiver. In certainembodiments, the communications interface 870 enables connection to thecommunication network 105 for identifying network functions based oncontent at the UE 101.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing information to processor 802, includinginstructions for execution. Such a medium may take many forms,including, but not limited to computer-readable storage medium (e.g.,non-volatile media, volatile media), and transmission media.Non-transitory media, such as non-volatile media, include, for example,optical or magnetic disks, such as storage device 808. Volatile mediainclude, for example, dynamic memory 804. Transmission media include,for example, coaxial cables, copper wire, fiber optic cables, andcarrier waves that travel through space without wires or cables, such asacoustic waves and electromagnetic waves, including radio, optical andinfrared waves. Signals include man-made transient variations inamplitude, frequency, phase, polarization or other physical propertiestransmitted through the transmission media. Common forms ofcomputer-readable media include, for example, a floppy disk, a flexibledisk, hard disk, magnetic tape, any other magnetic medium, a CD-ROM,CDRW, DVD, any other optical medium, punch cards, paper tape, opticalmark sheets, any other physical medium with patterns of holes or otheroptically recognizable indicia, a RAM, a PROM, an EPROM, a FLASH-EPROM,any other memory chip or cartridge, a carrier wave, or any other mediumfrom which a computer can read. The term computer-readable storagemedium is used herein to refer to any computer-readable medium excepttransmission media.

Logic encoded in one or more tangible media includes one or both ofprocessor instructions on a computer-readable storage media and specialpurpose hardware, such as ASIC 820.

Network link 878 typically provides information communication usingtransmission media through one or more networks to other devices thatuse or process the information. For example, network link 878 mayprovide a connection through local network 880 to a host computer 882 orto equipment 884 operated by an Internet Service Provider (ISP). ISPequipment 884 in turn provides data communication services through thepublic, world-wide packet-switching communication network of networksnow commonly referred to as the Internet 890.

A computer called a server host 892 connected to the Internet hosts aprocess that provides a service in response to information received overthe Internet. For example, server host 892 hosts a process that providesinformation representing video data for presentation at display 814. Itis contemplated that the components of system 800 can be deployed invarious configurations within other computer systems, e.g., host 882 andserver 892.

At least some embodiments of the invention are related to the use ofcomputer system 800 for implementing some or all of the techniquesdescribed herein. According to one embodiment of the invention, thosetechniques are performed by computer system 800 in response to processor802 executing one or more sequences of one or more processorinstructions contained in memory 804. Such instructions, also calledcomputer instructions, software and program code, may be read intomemory 804 from another computer-readable medium such as storage device808 or network link 878. Execution of the sequences of instructionscontained in memory 804 causes processor 802 to perform one or more ofthe method steps described herein. In alternative embodiments, hardware,such as ASIC 820, may be used in place of or in combination withsoftware to implement the invention. Thus, embodiments of the inventionare not limited to any specific combination of hardware and software,unless otherwise explicitly stated herein.

The signals transmitted over network link 878 and other networks throughcommunications interface 870, carry information to and from computersystem 800. Computer system 800 can send and receive information,including program code, through the networks 880, 890 among others,through network link 878 and communications interface 870. In an exampleusing the Internet 890, a server host 892 transmits program code for aparticular application, requested by a message sent from computer 800,through Internet 890, ISP equipment 884, local network 880 andcommunications interface 870. The received code may be executed byprocessor 802 as it is received, or may be stored in memory 804 or instorage device 808 or other non-volatile storage for later execution, orboth. In this manner, computer system 800 may obtain application programcode in the form of signals on a carrier wave.

Various forms of computer readable media may be involved in carrying oneor more sequence of instructions or data or both to processor 802 forexecution. For example, instructions and data may initially be carriedon a magnetic disk of a remote computer such as host 882. The remotecomputer loads the instructions and data into its dynamic memory andsends the instructions and data over a telephone line using a modem. Amodem local to the computer system 800 receives the instructions anddata on a telephone line and uses an infra-red transmitter to convertthe instructions and data to a signal on an infra-red carrier waveserving as the network link 878. An infrared detector serving ascommunications interface 870 receives the instructions and data carriedin the infrared signal and places information representing theinstructions and data onto bus 810. Bus 810 carries the information tomemory 804 from which processor 802 retrieves and executes theinstructions using some of the data sent with the instructions. Theinstructions and data received in memory 804 may optionally be stored onstorage device 808, either before or after execution by the processor802.

FIG. 9 illustrates a chip set or chip 900 upon which an embodiment ofthe invention may be implemented. Chip set 900 is programmed foridentifying network functions based on content as described herein andincludes, for instance, the processor and memory components describedwith respect to FIG. 8 incorporated in one or more physical packages(e.g., chips). By way of example, a physical package includes anarrangement of one or more materials, components, and/or wires on astructural assembly (e.g., a baseboard) to provide one or morecharacteristics such as physical strength, conservation of size, and/orlimitation of electrical interaction. It is contemplated that in certainembodiments the chip set 900 can be implemented in a single chip. It isfurther contemplated that in certain embodiments the chip set or chip900 can be implemented as a single “system on a chip.” It is furthercontemplated that in certain embodiments a separate ASIC would not beused, for example, and that all relevant functions as disclosed hereinwould be performed by a processor or processors. Chip set or chip 900,or a portion thereof, constitutes a means for performing one or moresteps of providing user interface navigation information associated withthe availability of services. Chip set or chip 900, or a portionthereof, constitutes a means for performing one or more steps ofidentifying network functions based on content.

In one embodiment, the chip set or chip 900 includes a communicationmechanism such as a bus 901 for passing information among the componentsof the chip set 900. A processor 903 has connectivity to the bus 901 toexecute instructions and process information stored in, for example, amemory 905. The processor 903 may include one or more processing coreswith each core configured to perform independently. A multi-coreprocessor enables multiprocessing within a single physical package.Examples of a multi-core processor include two, four, eight, or greaternumbers of processing cores. Alternatively or in addition, the processor903 may include one or more microprocessors configured in tandem via thebus 901 to enable independent execution of instructions, pipelining, andmultithreading. The processor 903 may also be accompanied with one ormore specialized components to perform certain processing functions andtasks such as one or more digital signal processors (DSP) 907, or one ormore application-specific integrated circuits (ASIC) 909. A DSP 907typically is configured to process real-world signals (e.g., sound) inreal time independently of the processor 903. Similarly, an ASIC 909 canbe configured to performed specialized functions not easily performed bya more general purpose processor. Other specialized components to aid inperforming the inventive functions described herein may include one ormore field programmable gate arrays (FPGA) (not shown), one or morecontrollers (not shown), or one or more other special-purpose computerchips.

In one embodiment, the chip set or chip 900 includes merely one or moreprocessors and some software and/or firmware supporting and/or relatingto and/or for the one or more processors.

The processor 903 and accompanying components have connectivity to thememory 905 via the bus 901. The memory 905 includes both dynamic memory(e.g., RAM, magnetic disk, writable optical disk, etc.) and staticmemory (e.g., ROM, CD-ROM, etc.) for storing executable instructionsthat when executed perform the inventive steps described herein foridentifying network functions based on content, The memory 905 alsostores the data associated with or generated by the execution of theinventive steps.

FIG. 10 is a diagram of exemplary components of a mobile terminal (e.g.,handset) for communications, which is capable of operating in the systemof FIG. 1, according to one embodiment. In some embodiments, mobileterminal 1001, or a portion thereof, constitutes a means for performingone or more steps of identifying network functions based on content.Generally, a radio receiver is often defined in terms of front-end andback-end characteristics. The front-end of the receiver encompasses allof the Radio Frequency (RF) circuitry whereas the back-end encompassesall of the base-band processing circuitry. As used in this application,the term “circuitry” refers to both: (1) hardware-only implementations(such as implementations in only analog and/or digital circuitry), and(2) to combinations of circuitry and software (and/or firmware) (suchas, if applicable to the particular context, to a combination ofprocessor(s), including digital signal processor(s), software, andmemory(ies) that work together to cause an apparatus, such as a mobilephone or server, to perform various functions). This definition of“circuitry” applies to all uses of this term in this application,including in any claims. As a further example, as used in thisapplication and if applicable to the particular context, the term“circuitry” would also cover an implementation of merely a processor (ormultiple processors) and its (or their) accompanying software/orfirmware. The term “circuitry” would also cover if applicable to theparticular context, for example, a baseband integrated circuit orapplications processor integrated circuit in a mobile phone or a similarintegrated circuit in a cellular network device or other networkdevices.

Pertinent internal components of the telephone include a Main ControlUnit (MCU) 1003, a Digital Signal Processor (DSP) 1005, and areceiver/transmitter unit including a microphone gain control unit and aspeaker gain control unit. A main display unit 1007 provides a displayto the user in support of various applications and mobile terminalfunctions that perform or support the steps of identifying networkfunctions based on content. The display 1007 includes display circuitryconfigured to display at least a portion of a user interface of themobile terminal (e.g., mobile telephone). Additionally, the display 1007and display circuitry are configured to facilitate user control of atleast some functions of the mobile terminal. An audio function circuitry1009 includes a microphone 1011 and microphone amplifier that amplifiesthe speech signal output from the microphone 1011. The amplified speechsignal output from the microphone 1011 is fed to a coder/decoder (CODEC)1013.

A radio section 1015 amplifies power and converts frequency in order tocommunicate with a base station, which is included in a mobilecommunication system, via antenna 1017. The power amplifier (PA) 1019and the transmitter/modulation circuitry are operationally responsive tothe MCU 1003, with an output from the PA 1019 coupled to the duplexer1021 or circulator or antenna switch, as known in the art. The PA 1019also couples to a battery interface and power control unit 1020.

In use, a user of mobile terminal 1001 speaks into the microphone 1011and his or her voice along with any detected background noise isconverted into an analog voltage. The analog voltage is then convertedinto a digital signal through the Analog to Digital Converter (ADC)1023. The control unit 1003 routes the digital signal into the DSP 1005for processing therein, such as speech encoding, channel encoding,encrypting, and interleaving. In one embodiment, the processed voicesignals are encoded, by units not separately shown, using a cellulartransmission protocol such as global evolution (EDGE), general packetradio service (GPRS), global system for mobile communications (GSM),Internet protocol multimedia subsystem (IMS), universal mobiletelecommunications system (UMTS), etc., as well as any other suitablewireless medium, e.g., microwave access (WiMAX), Long Term Evolution(LTE) networks, code division multiple access (CDMA), wideband codedivision multiple access (WCDMA), wireless fidelity (WiFi), satellite,and the like.

The encoded signals are then routed to an equalizer 1025 forcompensation of any frequency-dependent impairments that occur duringtransmission though the air such as phase and amplitude distortion.After equalizing the bit stream, the modulator 1027 combines the signalwith a RF signal generated in the RF interface 1029. The modulator 1027generates a sine wave by way of frequency or phase modulation. In orderto prepare the signal for transmission, an up-converter 1031 combinesthe sine wave output from the modulator 1027 with another sine wavegenerated by a synthesizer 1033 to achieve the desired frequency oftransmission. The signal is then sent through a PA 1019 to increase thesignal to an appropriate power level. In practical systems, the PA 1019acts as a variable gain amplifier whose gain is controlled by the DSP1005 from information received from a network base station. The signalis then filtered within the duplexer 1021 and optionally sent to anantenna coupler 1035 to match impedances to provide maximum powertransfer. Finally, the signal is transmitted via antenna 1017 to a localbase station. An automatic gain control (AGC) can be supplied to controlthe gain of the final stages of the receiver. The signals may beforwarded from there to a remote telephone which may be another cellulartelephone, other mobile phone or a land-line connected to a PublicSwitched Telephone Network (PSTN), or other telephony networks.

Voice signals transmitted to the mobile terminal 1001 are received viaantenna 1017 and immediately amplified by a low noise amplifier (LNA)1037. A down-converter 1039 lowers the carrier frequency while thedemodulator 1041 strips away the RF leaving only a digital bit stream.The signal then goes through the equalizer 1025 and is processed by theDSP 1005. A Digital to Analog Converter (DAC) 1043 converts the signaland the resulting output is transmitted to the user through the speaker1045, all under control of a Main Control Unit (MCU) 1003—which can beimplemented as a Central Processing Unit (CPU) (not shown).

The MCU 1003 receives various signals including input signals from thekeyboard 1047. The keyboard 1047 and/or the MCU 1003 in combination withother user input components (e.g., the microphone 1011) comprise a userinterface circuitry for managing user input. The MCU 1003 runs a userinterface software to facilitate user control of at least some functionsof the mobile terminal 1001 for identifying network functions based oncontent. The MCU 1003 also delivers a display command and a switchcommand to the display 1007 and to the speech output switchingcontroller, respectively. Further, the MCU 1003 exchanges informationwith the DSP 1005 and can access an optionally incorporated SIM card1049 and a memory 1051. In addition, the MCU 1003 executes variouscontrol functions required of the terminal. The DSP 1005 may, dependingupon the implementation, perform any of a variety of conventionaldigital processing functions on the voice signals. Additionally, DSP1005 determines the background noise level of the local environment fromthe signals detected by microphone 1011 and sets the gain of microphone1011 to a level selected to compensate for the natural tendency of theuser of the mobile terminal 1001.

The CODEC 1013 includes the ADC 1023 and DAC 1043. The memory 1051stores various data including call incoming tone data and is capable ofstoring other data including music data received via, e.g., the globalInternet. The software module could reside in RAM memory, flash memory,registers, or any other form of writable storage medium known in theart. The memory device 1051 may be, but not limited to, a single memory,CD, DVD, ROM, RAM, EEPROM, optical storage, or any other non-volatilestorage medium capable of storing digital data.

An optionally incorporated SIM card 1049 carries, for instance,important information, such as the cellular phone number, the carriersupplying service, subscription details, and security information. TheSIM card 1049 serves primarily to identify the mobile terminal 1001 on aradio network. The card 1049 also contains a memory for storing apersonal telephone number registry, text messages, and user specificmobile terminal settings.

While the invention has been described in connection with a number ofembodiments and implementations, the invention is not so limited butcovers various obvious modifications and equivalent arrangements, whichfall within the purview of the appended claims. Although features of theinvention are expressed in certain combinations among the claims, it iscontemplated that these features can be arranged in any combination andorder.

What is claimed:
 1. A method comprising: determining, via at least oneprocessor, first data that indicates a concept represented in contentprovided by a device; and determining, via the at least one processor,based on the first data, a function provided by a network service.
 2. Amethod of claim 1, further comprising causing, at least in part, actionsthat result in transmitting a message that indicates the function.
 3. Amethod of claim 1, further comprising causing, at least in part, actionsthat result in presenting, at the device, a description of the function.4. A method of claim 1, further comprising causing, at least in part,actions that result in invoking the function provided by the networkservice.
 5. A method of claim 1, wherein determining the functionprovided by the network service further comprises sending a message thatindicates the first data to a service that associates, with eachfunction of a plurality of functions provided by network services, datathat indicates at least one of an identifier for a concept or data thatindicates an identifier for context of a device.
 6. A method of claim 1,further comprising determining second data that indicates a currentcontext for the device, wherein: determining the function provided bythe network service further comprises determining the function based, atleast in part, on the second data.
 7. A method of claim 6, whereindetermining the function provided by the network service based on thesecond data that indicates the current context further comprises findingin a data structure an association between the function and anidentifier for device context that includes the current context for thedevice.
 8. A method of claim 1, further comprising determining seconddata that indicates a current context for the device, whereindetermining the function provided by the network service furthercomprises determining the function based, at least in part, on thesecond data.
 9. A method of claim 8, wherein determining the second datathat indicates the current context for the device further comprisesreceiving a message that indicates the second data.
 10. A method ofclaim 1, wherein determining the first data that indicates the conceptrepresented in content provided by the device further comprises:receiving a message that indicates a media type feature based on thecontent; and determining the first data that indicates the concept basedon the media type feature.
 11. An apparatus comprising: at least oneprocessor; and at least one memory including computer program code forone or more programs, the at least one memory and the computer programcode configured to, with the at least one processor, cause the apparatusto perform at least the following, determine first data that indicates aconcept represented in content provided by a device; and determine,based on the first data, a function provided by a network service. 12.An apparatus of claim 11, wherein the device is a mobile phone furthercomprising: user interface circuitry and user interface softwareconfigured to facilitate user control of at least some functions of themobile phone through use of a display and configured to respond to userinput; and a display and display circuitry configured to display atleast a portion of a user interface of the mobile phone, the display anddisplay circuitry configured to facilitate user control of at least somefunctions of the mobile phone.
 13. An apparatus of claim 11, wherein theapparatus is further caused to at least determine second data thatindicates a current context for the device; and wherein determining thefunction provided by the network service further comprises determiningthe function based, at least in part, on the second data.
 14. Anapparatus of claim 11, wherein to determine the first data thatindicates the concept represented in content provided by the device, theapparatus is further caused to: receive a message that indicates a mediatype feature based on the content; and determine the first data thatindicates the concept based on the media type feature.
 15. Anon-transitory computer-readable storage medium carrying one or moresequences of one or more instructions which, when executed by one ormore processors, cause an apparatus to perform the following steps:determine first data that indicates a concept represented in contentprovided by a device; and determine, based on the first data, a functionprovided by a different network service
 16. A non-transitorycomputer-readable storage medium of claim 15, wherein the apparatus isfurther caused to perform at least the step of: determine second datathat indicates a current context for the device; and determine thefunction provided by the network service further based, at least inpart, on the second data.
 17. A non-transitory computer-readable storagemedium of claim 15, wherein the first data that indicates the conceptrepresented in content provided by the device is determined by furthercausing the apparatus to perform the steps of: receive a message thatindicates a media type feature based on the content; and determine thefirst data that indicates the concept based on the media type feature.18. A non-transitory computer-readable storage medium of claim 15,wherein the apparatus is further configured to cause, at least in part,actions that result in transmitting a message that indicates thefunction.
 19. A non-transitory computer-readable storage medium of claim15, wherein the apparatus is further configured to cause, at least inpart, actions that result in presenting, at the device, a description ofthe function.
 20. A non-transitory computer-readable storage medium ofclaim 15, wherein the apparatus is further configured to cause, at leastin part, actions that result in invoking the function provided by thenetwork service.
 21. A non-transitory computer-readable storage mediumof claim 15, wherein in determining the function provided by the networkservice, the apparatus is further configured to perform the step of:send a message that indicates the first data to a service thatassociates, with each function of a plurality of functions provided bynetwork services, data that indicates at least one of an identifier fora concept or data that indicates an identifier for context of a device.22. A non-transitory computer-readable storage medium of claim 15,wherein the apparatus is further configured to perform the steps of:determine second data that indicates a current context for the device,and determine the function, based, at least in part, on the second data.23. A non-transitory computer-readable storage medium of claim 22,wherein in determining the function provided by the network servicebased on the second data that indicates the current context, theapparatus is further configured to perform the step of: find in a datastructure an association between the function and an identifier fordevice context that includes the current context for the device.